package cn.lutu.domain.repository;

import cn.lutu.protocol.dto.AdminSelectUserDTO;
import cn.lutu.protocol.entity.Authority;
import cn.lutu.protocol.entity.Spot;
import cn.lutu.protocol.entity.UserAndRole;
import cn.lutu.protocol.vo.RoleVO;
import cn.lutu.protocol.vo.adminVO.*;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
@Transactional
public interface AdminRepository {
    /*管理员查询所有用户信息*/
    List<AdminUserListVO> userList();
    /*管理查询所有角色信息*/
    List<AdminRoleListVO> roleList();
    /*管理查询所有景点信息*/
    List<AdminSpotVO> spotList();
    /*管理查询所有权限信息*/
    List<AuthorityUpdateVO> authorityList();
    /*管理根据条件查询用户角色*/
    List<AdminUserListVO> userListBy(AdminSelectUserDTO adminSelectUserDTO);
    /*管理员根据用户名查询用户详情*/
    UserDetailVO getUserInfoByUsername(String userName);
    /*管理员根据用户名查询角色详情*/
    RoleVO getRoleInfoByName(String name);
    /*管理员根据用户名查询权限详情*/
    AuthorityUpdateVO getAuthorityInfoByName(String name);
    /*管理员根据id查询权限详情*/
    AuthorityUpdateVO getAuthorityById(Long id);
    /*根据ID删除角色数据*/
    int deleteById(Long id);
    /*根据ID删除权限数据*/
    int deleteAuthorityById(Long id);
   /*根据ID查询管理员数据*/
    UserAndRole selectById(Long id);
    /*根据ID查询景点数据*/
    AdminSpotVO getSpotById(Long id);
    /*根据ID获取角色数据*/
    RoleUpdateInfoVO getSelectById(Long id);
   /*根据ID修改角色数据*/
    int updateById(UserAndRole userAndRole);
    int updateAuthorityById(Authority authority);
    int countByNameAndNotId(Long id, String name);
    int insert(UserAndRole userAndRole);
    int updateSpotById(Spot spot);
}
